Connect to notify instead of multiple detailed signals.
authorMatthias Clasen <mclasen@redhat.com>
Sat, 31 Dec 2005 07:06:31 +0000 (07:06 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 31 Dec 2005 07:06:31 +0000 (07:06 +0000)
2005-12-31  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkaction.c:
        * gtk/gtkentry.c: Connect to notify instead of multiple
        detailed signals.

ChangeLog
ChangeLog.pre-2-10
gtk/gtkaction.c
gtk/gtkentry.c

index 5a7fd7040a77188f994d886986478bb6e3addf48..813653cfdf6fe0da5579797ab8c921aa35e6c5e4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-12-31  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkaction.c: 
+       * gtk/gtkentry.c: Connect to notify instead of multiple
+       detailed signals.
+
 2005-12-30  Matthias Clasen  <mclasen@redhat.com>
 
        * gdk/gdk.symbols: 
index 5a7fd7040a77188f994d886986478bb6e3addf48..813653cfdf6fe0da5579797ab8c921aa35e6c5e4 100644 (file)
@@ -1,3 +1,9 @@
+2005-12-31  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkaction.c: 
+       * gtk/gtkentry.c: Connect to notify instead of multiple
+       detailed signals.
+
 2005-12-30  Matthias Clasen  <mclasen@redhat.com>
 
        * gdk/gdk.symbols: 
index 076d8b4c6e2b2941c7aeab37128f7d5c18c382b2..ab2c22bac5d93b551eef6ded028c47f9e6d70c0c 100644 (file)
@@ -768,7 +768,6 @@ gtk_action_sync_tooltip (GtkAction  *action,
     }
 }
 
-
 static gboolean
 gtk_action_create_menu_proxy (GtkToolItem *tool_item, 
                              GtkAction   *action)
@@ -792,6 +791,52 @@ gtk_action_create_menu_proxy (GtkToolItem *tool_item,
   return TRUE;
 }
 
+static void 
+gtk_action_handle_notify (GtkAction  *action, 
+                         GParamSpec *pspec, 
+                         GtkWidget  *proxy)
+{
+  if (pspec->name == I_("sensitive"))
+    gtk_action_sync_sensitivity (action, pspec, proxy);
+  else if (pspec->name == I_("visible"))
+    gtk_action_sync_visible (action, pspec, proxy);
+  else if (GTK_IS_MENU_ITEM (proxy) && pspec->name == I_("label"))
+    gtk_action_sync_label (action, pspec, proxy);
+  else if (GTK_IS_IMAGE_MENU_ITEM (proxy) && pspec->name == I_("stock-id"))
+    gtk_action_sync_stock_id (action, pspec, proxy);
+  else if (GTK_IS_TOOL_ITEM (proxy))
+    {
+      if (pspec->name == I_("visible-horizontal") ||
+         pspec->name == I_("visible-vertical") ||
+         pspec->name == I_("is-important"))
+       gtk_action_sync_property (action, pspec, proxy);
+      else if (pspec->name == I_("tooltip"))
+       gtk_action_sync_tooltip (action, pspec, proxy);
+
+      if (GTK_IS_TOOL_BUTTON (proxy))
+       {
+         if (pspec->name == I_("short-label"))
+           gtk_action_sync_short_label (action, pspec, proxy);
+         if (pspec->name == I_("stock-id"))
+           gtk_action_sync_property (action, pspec, proxy);
+       }
+    }
+  else if (GTK_IS_BUTTON (proxy))
+    {
+      if (gtk_button_get_use_stock (GTK_BUTTON (proxy)))
+       {
+         if (pspec->name == I_("stock-id"))
+           gtk_action_sync_button_stock_id (action, pspec, proxy);
+       }
+      else if (GTK_BIN (proxy)->child == NULL || 
+              GTK_IS_LABEL (GTK_BIN (proxy)->child))
+       {
+         if (pspec->name == I_("short-label"))
+           gtk_action_sync_short_label (action, pspec, proxy);
+       }
+    }
+}
+
 static void
 connect_proxy (GtkAction     *action, 
               GtkWidget     *proxy)
@@ -805,12 +850,10 @@ connect_proxy (GtkAction     *action,
   g_signal_connect (proxy, "destroy",
                    G_CALLBACK (remove_proxy), action);
 
-  g_signal_connect_object (action, "notify::sensitive",
-                          G_CALLBACK (gtk_action_sync_sensitivity), proxy, 0);
-  gtk_widget_set_sensitive (proxy, gtk_action_is_sensitive (action));
+  g_signal_connect_object (action, "notify",
+                          G_CALLBACK (gtk_action_handle_notify), proxy, 0);
 
-  g_signal_connect_object (action, "notify::visible",
-                          G_CALLBACK (gtk_action_sync_visible), proxy, 0);
+  gtk_widget_set_sensitive (proxy, gtk_action_is_sensitive (action));
   if (gtk_action_is_visible (action))
     gtk_widget_show (proxy);
   else
@@ -852,8 +895,6 @@ connect_proxy (GtkAction     *action,
                      NULL);
 
       gtk_label_set_label (GTK_LABEL (label), action->private_data->label);
-      g_signal_connect_object (action, "notify::label",
-                              G_CALLBACK (gtk_action_sync_label), proxy, 0);
 
       if (GTK_IS_IMAGE_MENU_ITEM (proxy))
        {
@@ -875,9 +916,6 @@ connect_proxy (GtkAction     *action,
            }
          gtk_image_set_from_stock (GTK_IMAGE (image),
                                    action->private_data->stock_id, GTK_ICON_SIZE_MENU);
-         g_signal_connect_object (action, "notify::stock-id",
-                                  G_CALLBACK (gtk_action_sync_stock_id),
-                                  proxy, 0);
        }
 
       if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (proxy)) == NULL)
@@ -902,19 +940,6 @@ connect_proxy (GtkAction     *action,
                                             "tooltip");
       gtk_action_sync_tooltip (action, pspec, proxy);
 
-      g_signal_connect_object (action, "notify::visible-horizontal",
-                              G_CALLBACK (gtk_action_sync_property), 
-                              proxy, 0);
-      g_signal_connect_object (action, "notify::visible-vertical",
-                              G_CALLBACK (gtk_action_sync_property), 
-                              proxy, 0);
-      g_signal_connect_object (action, "notify::is-important",
-                              G_CALLBACK (gtk_action_sync_property), 
-                              proxy, 0);
-      g_signal_connect_object (action, "notify::tooltip",
-                              G_CALLBACK (gtk_action_sync_tooltip), 
-                              proxy, 0);
-
       g_signal_connect_object (proxy, "create_menu_proxy",
                               G_CALLBACK (gtk_action_create_menu_proxy),
                               action, 0);
@@ -930,12 +955,6 @@ connect_proxy (GtkAction     *action,
                        "stock_id", action->private_data->stock_id,
                        NULL);
 
-         g_signal_connect_object (action, "notify::short-label",
-                                  G_CALLBACK (gtk_action_sync_short_label),
-                                  proxy, 0);      
-         g_signal_connect_object (action, "notify::stock-id",
-                                  G_CALLBACK (gtk_action_sync_property), 
-                                  proxy, 0);
          g_signal_connect_object (proxy, "clicked",
                                   G_CALLBACK (gtk_action_activate), action,
                                   G_CONNECT_SWAPPED);
@@ -950,9 +969,6 @@ connect_proxy (GtkAction     *action,
          g_object_set (proxy,
                        "label", action->private_data->stock_id,
                        NULL);
-         g_signal_connect_object (action, "notify::stock-id",
-                                  G_CALLBACK (gtk_action_sync_button_stock_id),
-                                  proxy, 0);
        }
       else if (GTK_BIN (proxy)->child == NULL || 
               GTK_IS_LABEL (GTK_BIN (proxy)->child))
@@ -962,10 +978,6 @@ connect_proxy (GtkAction     *action,
                        "label", action->private_data->short_label,
                        "use_underline", TRUE,
                        NULL);
-         g_signal_connect_object (action, "notify::short-label",
-                                  G_CALLBACK (gtk_action_sync_short_label),
-                                  proxy, 0);
-         
        }
       
       /* we leave the button alone if there is a custom child */
index aa91bd4a2a3e998f4a54bd286a497ebb3e6e4180..a8fa84dd97472087d82c484bfd4051ede4190ef1 100644 (file)
@@ -5390,9 +5390,13 @@ static void
 clear_completion_callback (GtkEntry   *entry,
                           GParamSpec *pspec)
 {
-  GtkEntryCompletion *completion = gtk_entry_get_completion (entry);
-
-  completion->priv->has_completion = FALSE;
+  if (pspec->name == I_("cursor-position") ||
+      pspec->name == I_("selection-bound"))
+    {
+      GtkEntryCompletion *completion = gtk_entry_get_completion (entry);
+      
+      completion->priv->has_completion = FALSE;
+    }
 }
 
 static gboolean
@@ -5433,8 +5437,12 @@ completion_changed (GtkEntryCompletion *completion,
 {
   GtkEntry *entry = GTK_ENTRY (data);
 
-  disconnect_completion_signals (entry, completion);
-  connect_completion_signals (entry, completion);
+  if (pspec->name == I_("popup-completion") ||
+      pspec->name == I_("inline-completion"))
+    {
+      disconnect_completion_signals (entry, completion);
+      connect_completion_signals (entry, completion);
+    }
 }
 
 static void
@@ -5477,18 +5485,14 @@ connect_completion_signals (GtkEntry           *entry,
       completion->priv->insert_text_id =
        g_signal_connect (entry, "insert_text",
                          G_CALLBACK (completion_insert_text_callback), completion);
-      g_signal_connect (entry, "notify::cursor-position",
-                       G_CALLBACK (clear_completion_callback), completion);
-      g_signal_connect (entry, "notify::selection-bound",
+      g_signal_connect (entry, "notify",
                        G_CALLBACK (clear_completion_callback), completion);
       g_signal_connect (entry, "activate",
                        G_CALLBACK (accept_completion_callback), completion);
       g_signal_connect (entry, "focus_out_event",
                        G_CALLBACK (accept_completion_callback), completion);
     }
-  g_signal_connect (completion, "notify::popup-completion",
-                   G_CALLBACK (completion_changed), entry);
-  g_signal_connect (completion, "notify::inline-completion",
+  g_signal_connect (completion, "notify",
                    G_CALLBACK (completion_changed), entry);
 }